package com.blq.snblib.util;

import android.content.Context;

/**
 * ================================================
 * 作者: SSNB
 * 日期: 2016/8/30
 * 描述:
 * dp转px px转dp px转sp sp转dp
 * ================================================
 */
public class DisplayUtil {

    /**
     * 将dip、dp转换为px
     * 如果传入的dip、dp为负数，
     * 会转化为正数对应的px
     * @param context 上下文
     * @param dip 需要转化的dip长度
     * @return 返回px长度
     */
    public static int dip2Px(Context context , float dip){
        float scale=context.getResources().getDisplayMetrics().density;
        dip = Math.abs(dip);
        return (int)(dip * scale + 0.5f);
    }

    /**
     * 将px转换为dip、dp
     * 如果传入的px为负数，
     * 会转化为正数对应的dip
     * @param context 上下文
     * @param px 需要转化的px长度
     * @return 返回dip长度
     */
    public static int px2Dip(Context context , float px){
        final float scale = context.getResources().getDisplayMetrics().density;
        px = Math.abs(px);
        return (int)(px/scale+0.5f);
    }

    /**
     *
     * 将sp转换为px
     * 如果传入的sp为负数，
     * 会转化为正数对应的px
     * @param context 上下文
     * @param sp 需要转化的px长度
     * @return 返回px长度
     */
    public static int sp2Px(Context context ,float sp){
        final float scale = context.getResources().getDisplayMetrics().scaledDensity;
        sp = Math.abs(sp);
        return (int) (sp*scale+0.5f);
    }

    /**
     * 将px转换为sp
     * 如果传入的px为负数，
     * 会转化为正数对应的sp
     * @param context 上下文
     * @param px 需要转化的px长度
     * @return 返回sp长度
     */
    public static int px2Sp(Context context ,float px){
        final float scale = context.getResources().getDisplayMetrics().scaledDensity;
        px = Math.abs(px);
        return (int) (px/scale+0.5f);
    }
}
